package cz.pecinovsky.česky.oopnz._134_;
//Příliš žluťoučký kůň úpěl ďábelské ódy
/*******************************************************************************
 *<pre>
 * Předchozí:   Není - toto_je_nově_definovaná_třída
 *              Ttt v projektu Ppp
 * Následující: Prozatím není
 *
 * Projekt  Ppp
 *   + Přidáno
 *   - Odebráno
 *   ~ Změněno
 *</pre>
 */


////////////////////////////////////////////////////////////////////////////////
//%%+  +++++ Konec ignorovaného počátečního textu +++++

import cz.pecinovsky.česky.oopnz.utility.IO;


/*******************************************************************************
 * Třída {@code Xkrementy}  má za úkol otestovat chování
 * inkrementačních a dekrementačních operátorů
 *
 * @author Rudolf PECINOVSKÝ
 * @version 6.03.2017 — 2010-11-08
 */
public class Xkrementy
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================

    //i, j, k jsou definovány jako statické atributy,
    //aby je metoda test mohla sdílet s metodou zobraz
    private static int     i, j, k;

    //Atribut vše slouží jako akumulátor vytvářeného řetězce
    private static String  vše = "";



//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

    /***************************************************************************
     * Metoda ověří, že se operátory chovají tak,
     * jak je v učebnici uvedeno v tabulce.
     */
    public static void test()
    {
        //Statické atributy jsou na počátku nulové => stačí nastavit i
        i = 1;              zobraz("Počáteční hodnoty");
        j = i++;            zobraz("Po (j = i++)" );
        k = ++i;            zobraz("Po (k = ++i)");
        k = i-- + j--;      zobraz("Po (k = i-- + j--)");
        k = --i + --j;      zobraz("Po (k = --i + --j)");
        IO.zpráva(vše);
        System.out.println(vše);
    }



//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /* Blokace použití konstruktoru. */ private Xkrementy() {}


//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================

    /***************************************************************************
     * Pomocná metoda, která zobrazí poslední akci a
     * vytiskne pomocí metody IO.zpráva() hodnoty všech číselných atributů.
     * Zaroveň přidá tištěný text do souhrnného řetězce,
     * který se bude tisknout na závěr.
     */
    private static void zobraz(String text)
    {
        text = text + ":  i=" + i + ",  j=" + j + ",  k=" + k;
//        IO.zpráva( text );
        vše = vše + "\n" + text;
    }



//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        Xkrementy inst = new Xkrementy();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
//%I+ <139
//}
//%I-

//%%-  ----- Začátek ignorovaného závěrečného textu -----
////////////////////////////////////////////////////////////////////////////////
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        IO.zpráva("Až se pokocháš, stiskni OK");
//        System.exit(0);
//    }
    /** @param args Parametry příkazového řádku - nepoužívané. */
    public static void main( String[] args )  {  test();  }
}
